name: ci
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    name: Build
    runs-on: ubuntu-22.04
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4

      - name: Setup Java 22
        uses: actions/setup-java@v4
        with:
          java-version: '22'
          distribution: 'adopt'

      - name: Cache Maven
        uses: actions/cache@v4
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2

      - run: sudo apt-get update && sudo apt-get install -y --no-install-recommends clang libbpf-dev linux-tools-common linux-tools-$(uname -r) gcc-multilib

      - name: mvn package
        run: ./mvnw -ntp -B package -DskipTests

      - name: upload bcc/target/bcc.jar
        uses: actions/upload-artifact@v4
        with:
          name: bcc.jar
          path: bcc/target/bcc.jar

  vm-test:
    if: false
    name: Run tests on pre-built kernel
    runs-on: ubuntu-22.04
    needs: build
    timeout-minutes: 10
    strategy:
      matrix:
        version: ["6.6"]
    env:
      HBT_KERNEL_VERSION: "${{ matrix.version }}"
    steps:
      - uses: actions/checkout@v4

      - name: Set up Java
        uses: actions/setup-java@v4
        with:
          java-version: '22'
          distribution: 'adopt'

      - run: sudo pip3 install https://github.com/amluto/virtme/archive/beb85146cd91de37ae455eccb6ab67c393e6e290.zip
      - run: sudo apt-get update && sudo apt-get install -y --no-install-recommends qemu-system-x86 bpfcc-tools libbpfcc libbpfcc-dev linux-headers-$(uname -r) linux-cloud-tools-generic gcc-multilib

      - name: Test
        run: |
          ./mvnw -ntp -B test -Djvm=testutil/bin/java

      - name: Publish Test Report
        uses: mikepenz/action-junit-report@v4
        if: always()
        with:
          check_name: 'Test Report (Kernel ${{ matrix.KERNEL_VERSION }})'
          report_paths: '**/build/test-results/test/TEST-*.xml'